AWS Systems Manager エージェント(SSM Agent)の現行のバージョンを確認して最新バージョンにアップデートする
コンバンハ、千葉(幸)です。
先日、AWS Systems Manager セッションマネージャーでリモートホストへのポートフォワードが可能になる新機能が提供されました。
こういった新機能を利用するために、AWS Systems Manager エージェント(SSM Agent)の一定以上のバージョンが要求されることがあります。(なお、今回で言えば 3.1.1374.0 以上が必要 なようです。)
上記のようなケースを想定し、以下の手順を確認してみます。
- インストール済みの SSM Agent のバージョンを確認する
- 最新版の SSM Agent にアップデートする
- (おまけ)SSM Agent のリリース履歴を確認する
インストール済みの SSM Agent のバージョンを確認する(コマンド)
まずはすでにインストール済みの SSM Agent が存在するケースを想定し、そのバージョンを確認してみます。
今回は現時点で最新であろう以下の AMI を使用し EC2 インスタンスを立ち上げます。Amazon Linux2 であるため、SSM Agent がインストール済みです。
amzn2-ami-kernel-5.10-hvm-2.0.20220426.0-x86_64-gp2
また、以下の条件も満たし、Systems Manager マネージドインスタンスとして管理された状態にしています。
- IAM ロール(インスタンスプロファイル)で必要な権限を付与している
- SSM エンドポイントに疎通可能な状態である
セッションマネージャーで接続し、yum info amazon-ssm-agent
を実行します。
sh-4.2$ yum info amazon-ssm-agent Loaded plugins: extras_suggestions, langpacks, priorities, update-motd Installed Packages Name : amazon-ssm-agent Arch : x86_64 Version : 3.1.1188.0 Release : 1.amzn2 Size : 115 M Repo : installed Summary : Manage EC2 Instances using SSM APIs URL : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html License : ASL 2.0 Description : This package provides Amazon SSM Agent for managing EC2 Instances using SSM APIs
インストール済みの SSM Agent のバージョンが3.1.1188.0
であることがわかりました。
OS によって確認方法が変わる場合もあります。他の OS でのコマンド例は以下をご参照ください。
インストール済みの SSM Agent のバージョンをアップデートする(yum)
yum で管理されているなら yum でアップデートしてみるか、とsudo yum update amazon-ssm-agent
を実行してみます。
sh-4.2$ sudo yum update amazon-ssm-agent Loaded plugins: extras_suggestions, langpacks, priorities, update-motd No packages marked for update
アップデートできるものがない、と言われてしまいました。yum での管理上では、3.1.1188.0
が最新とされているようです。
戯れにsudo yum install
も試してみますが、もちろん結果は変わりません。
h-4.2$ sudo yum install amazon-ssm-agent Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 3.7 kB 00:00:00 Package matching amazon-ssm-agent-3.1.1188.0-1.amzn2.x86_64 already installed. Checking for update. Nothing to do
インストール済みの SSM Agent のバージョンをアップデートする(Run Command)
冒頭の例で必要になるのは3.1.1374.0
以上なので、別のアプローチでアップデートを試みます。
Systems Manager ドキュメントではAWS-UpdateSSMAgent
という Command タイプのドキュメントが用意されています。
これを実行して SSM エージェントのバージョンがどうなるかを確認してみましょう。
コマンドの実行画面から、パラメータやターゲット、出力オプションなどを適宜選択し実行します。パラメータとして SSM Agent バージョンを指定できますが、今回は特に指定しませんでした。その場合、最新版が適用されます。
実行履歴を確認してみると、以下のログが出力されていました。
Successfully downloaded manifest Successfully downloaded updater version 3.1.1476.0 Updating amazon-ssm-agent from 3.1.1188.0 to 3.1.1476.0 Successfully downloaded https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/amazon-ssm-agent/3.1.1188.0/amazon-ssm-agent-linux-amd64.tar.gz Successfully downloaded https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/amazon-ssm-agent/3.1.1476.0/amazon-ssm-agent-linux-amd64.tar.gz Initiating amazon-ssm-agent update to 3.1.1476.0 amazon-ssm-agent updated successfully to 3.1.1476.0
3.1.1476.0
にアップデートされたことが確認できました。先ほどのコマンドで確認しても、きちんと反映されています。
sh-4.2$ yum info amazon-ssm-agent Loaded plugins: extras_suggestions, langpacks, priorities, update-motd Installed Packages Name : amazon-ssm-agent Arch : x86_64 Version : 3.1.1476.0 Release : 1 Size : 108 M Repo : installed Summary : Manage EC2 Instances using SSM APIs URL : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html License : Apache License, Version 2.0 Description : This package provides Amazon SSM Agent for managing EC2 Instances using SSM APIs
SSM Agent のアップデート時にセッションマネージャーの接続断なし
AWS-UpdateSSMAgent
でアップデートを行った時はセッションマネージャー接続した状態でしたが、アップデートの最中・終了後ともにセッションマネージャーは切断されることなく接続されたままでした。
いい感じにやってくれますね。
SSM Agent のリリース履歴を確認する
今回アップデートされた3.1.1476.0
が本当に最新版なのか?というのが気になるのでリリース履歴を確認してみましょう。以下ページから確認できます。
きちんと3.1.1476.0
が最新でした!(2022/5/30時点)
yum でなくAWS-UpdateSSMAgent
であれば、リリース済みの最新版にアップデートしてくれそうです。curl などで手動でダウンロードする方法もあるかと思いますが、難しいことを考えなくて済むし複数台に一気に適用できるのでAWS-UpdateSSMAgent
の方がおすすめです。
インストール済みの SSM Agent のバージョンを確認する(コンソール)
順番が前後しますが、インストール済みの SSM Agent バージョンはマネジメントコンソールからでも一覧で確認できます。
「フリートマネージャー」の画面から確認しましょう。
わたしの環境では対象が 1 台しかないので見栄えがさみしいですが、ここでまとめて複数台のバージョンを確認できます。
フリートマネージャーのマネージドノードで一覧に現れてこない場合
この一覧に表示されるためにはマネージドノードとして管理されている必要があります。 SSM Agent をインストールしているのに一覧に現れてこない場合は、以下を参考にいくつかの観点をチェックしてください。
SSM Agent の自動更新もあるよ
今回使用したAWS-UpdateSSMAgent
を利用した自動更新の仕組みも簡単に実現できます。
ワンクリックで実装でき、14 日周期(デフォルトの場合)で最新版への更新が行われます。
都度手動で更新を行うよりは圧倒的に便利ですので、万が一 エラーが発生した場合の影響がクリティカル、という環境でなければ有効化を検討しましょう。
終わりに
今回は以下の手順を確認してみました。
- 現在インストール済みの SSM Agent のバージョンを確認する
- 最新版の SSM Agent にアップデートする
- (おまけ)SSM Agent のリリース履歴を確認する
当初はsudo yum update amazon-ssm-agent
を実行してアップデートされるものと思っていたのですが、意図通りのバージョンにならなかったのでその回り道も含めて書いてみました。
SSM Agent に限らず、yum のリポジトリで取得できるパッケージのバージョンは最新版に比べてちょっと遅れがちなようです。
同じようなケースで困っていた方の参考になれば幸いです。
以上、 チバユキ (@batchicchi) がお送りしました。